#ifndef UCAPS_H
#define UCAPS_H

//satan invented unicode?
#define CAPS_LEN 666

static const int caps_table[CAPS_LEN][2]={
{0x0061,0x0041},
{0x0062,0x0042},
{0x0063,0x0043},
{0x0064,0x0044},
{0x0065,0x0045},
{0x0066,0x0046},
{0x0067,0x0047},
{0x0068,0x0048},
{0x0069,0x0049},
{0x006A,0x004A},
{0x006B,0x004B},
{0x006C,0x004C},
{0x006D,0x004D},
{0x006E,0x004E},
{0x006F,0x004F},
{0x0070,0x0050},
{0x0071,0x0051},
{0x0072,0x0052},
{0x0073,0x0053},
{0x0074,0x0054},
{0x0075,0x0055},
{0x0076,0x0056},
{0x0077,0x0057},
{0x0078,0x0058},
{0x0079,0x0059},
{0x007A,0x005A},
{0x00E0,0x00C0},
{0x00E1,0x00C1},
{0x00E2,0x00C2},
{0x00E3,0x00C3},
{0x00E4,0x00C4},
{0x00E5,0x00C5},
{0x00E6,0x00C6},
{0x00E7,0x00C7},
{0x00E8,0x00C8},
{0x00E9,0x00C9},
{0x00EA,0x00CA},
{0x00EB,0x00CB},
{0x00EC,0x00CC},
{0x00ED,0x00CD},
{0x00EE,0x00CE},
{0x00EF,0x00CF},
{0x00F0,0x00D0},
{0x00F1,0x00D1},
{0x00F2,0x00D2},
{0x00F3,0x00D3},
{0x00F4,0x00D4},
{0x00F5,0x00D5},
{0x00F6,0x00D6},
{0x00F8,0x00D8},
{0x00F9,0x00D9},
{0x00FA,0x00DA},
{0x00FB,0x00DB},
{0x00FC,0x00DC},
{0x00FD,0x00DD},
{0x00FE,0x00DE},
{0x00FF,0x0178},
{0x0101,0x0100},
{0x0103,0x0102},
{0x0105,0x0104},
{0x0107,0x0106},
{0x0109,0x0108},
{0x010B,0x010A},
{0x010D,0x010C},
{0x010F,0x010E},
{0x0111,0x0110},
{0x0113,0x0112},
{0x0115,0x0114},
{0x0117,0x0116},
{0x0119,0x0118},
{0x011B,0x011A},
{0x011D,0x011C},
{0x011F,0x011E},
{0x0121,0x0120},
{0x0123,0x0122},
{0x0125,0x0124},
{0x0127,0x0126},
{0x0129,0x0128},
{0x012B,0x012A},
{0x012D,0x012C},
{0x012F,0x012E},
{0x0131,0x0049},
{0x0133,0x0132},
{0x0135,0x0134},
{0x0137,0x0136},
{0x013A,0x0139},
{0x013C,0x013B},
{0x013E,0x013D},
{0x0140,0x013F},
{0x0142,0x0141},
{0x0144,0x0143},
{0x0146,0x0145},
{0x0148,0x0147},
{0x014B,0x014A},
{0x014D,0x014C},
{0x014F,0x014E},
{0x0151,0x0150},
{0x0153,0x0152},
{0x0155,0x0154},
{0x0157,0x0156},
{0x0159,0x0158},
{0x015B,0x015A},
{0x015D,0x015C},
{0x015F,0x015E},
{0x0161,0x0160},
{0x0163,0x0162},
{0x0165,0x0164},
{0x0167,0x0166},
{0x0169,0x0168},
{0x016B,0x016A},
{0x016D,0x016C},
{0x016F,0x016E},
{0x0171,0x0170},
{0x0173,0x0172},
{0x0175,0x0174},
{0x0177,0x0176},
{0x017A,0x0179},
{0x017C,0x017B},
{0x017E,0x017D},
{0x0183,0x0182},
{0x0185,0x0184},
{0x0188,0x0187},
{0x018C,0x018B},
{0x0192,0x0191},
{0x0199,0x0198},
{0x01A1,0x01A0},
{0x01A3,0x01A2},
{0x01A5,0x01A4},
{0x01A8,0x01A7},
{0x01AD,0x01AC},
{0x01B0,0x01AF},
{0x01B4,0x01B3},
{0x01B6,0x01B5},
{0x01B9,0x01B8},
{0x01BD,0x01BC},
{0x01C6,0x01C4},
{0x01C9,0x01C7},
{0x01CC,0x01CA},
{0x01CE,0x01CD},
{0x01D0,0x01CF},
{0x01D2,0x01D1},
{0x01D4,0x01D3},
{0x01D6,0x01D5},
{0x01D8,0x01D7},
{0x01DA,0x01D9},
{0x01DC,0x01DB},
{0x01DF,0x01DE},
{0x01E1,0x01E0},
{0x01E3,0x01E2},
{0x01E5,0x01E4},
{0x01E7,0x01E6},
{0x01E9,0x01E8},
{0x01EB,0x01EA},
{0x01ED,0x01EC},
{0x01EF,0x01EE},
{0x01F3,0x01F1},
{0x01F5,0x01F4},
{0x01FB,0x01FA},
{0x01FD,0x01FC},
{0x01FF,0x01FE},
{0x0201,0x0200},
{0x0203,0x0202},
{0x0205,0x0204},
{0x0207,0x0206},
{0x0209,0x0208},
{0x020B,0x020A},
{0x020D,0x020C},
{0x020F,0x020E},
{0x0211,0x0210},
{0x0213,0x0212},
{0x0215,0x0214},
{0x0217,0x0216},
{0x0253,0x0181},
{0x0254,0x0186},
{0x0257,0x018A},
{0x0258,0x018E},
{0x0259,0x018F},
{0x025B,0x0190},
{0x0260,0x0193},
{0x0263,0x0194},
{0x0268,0x0197},
{0x0269,0x0196},
{0x026F,0x019C},
{0x0272,0x019D},
{0x0275,0x019F},
{0x0283,0x01A9},
{0x0288,0x01AE},
{0x028A,0x01B1},
{0x028B,0x01B2},
{0x0292,0x01B7},
{0x03AC,0x0386},
{0x03AD,0x0388},
{0x03AE,0x0389},
{0x03AF,0x038A},
{0x03B1,0x0391},
{0x03B2,0x0392},
{0x03B3,0x0393},
{0x03B4,0x0394},
{0x03B5,0x0395},
{0x03B6,0x0396},
{0x03B7,0x0397},
{0x03B8,0x0398},
{0x03B9,0x0399},
{0x03BA,0x039A},
{0x03BB,0x039B},
{0x03BC,0x039C},
{0x03BD,0x039D},
{0x03BE,0x039E},
{0x03BF,0x039F},
{0x03C0,0x03A0},
{0x03C1,0x03A1},
{0x03C3,0x03A3},
{0x03C4,0x03A4},
{0x03C5,0x03A5},
{0x03C6,0x03A6},
{0x03C7,0x03A7},
{0x03C8,0x03A8},
{0x03C9,0x03A9},
{0x03CA,0x03AA},
{0x03CB,0x03AB},
{0x03CC,0x038C},
{0x03CD,0x038E},
{0x03CE,0x038F},
{0x03E3,0x03E2},
{0x03E5,0x03E4},
{0x03E7,0x03E6},
{0x03E9,0x03E8},
{0x03EB,0x03EA},
{0x03ED,0x03EC},
{0x03EF,0x03EE},
{0x0430,0x0410},
{0x0431,0x0411},
{0x0432,0x0412},
{0x0433,0x0413},
{0x0434,0x0414},
{0x0435,0x0415},
{0x0436,0x0416},
{0x0437,0x0417},
{0x0438,0x0418},
{0x0439,0x0419},
{0x043A,0x041A},
{0x043B,0x041B},
{0x043C,0x041C},
{0x043D,0x041D},
{0x043E,0x041E},
{0x043F,0x041F},
{0x0440,0x0420},
{0x0441,0x0421},
{0x0442,0x0422},
{0x0443,0x0423},
{0x0444,0x0424},
{0x0445,0x0425},
{0x0446,0x0426},
{0x0447,0x0427},
{0x0448,0x0428},
{0x0449,0x0429},
{0x044A,0x042A},
{0x044B,0x042B},
{0x044C,0x042C},
{0x044D,0x042D},
{0x044E,0x042E},
{0x044F,0x042F},
{0x0451,0x0401},
{0x0452,0x0402},
{0x0453,0x0403},
{0x0454,0x0404},
{0x0455,0x0405},
{0x0456,0x0406},
{0x0457,0x0407},
{0x0458,0x0408},
{0x0459,0x0409},
{0x045A,0x040A},
{0x045B,0x040B},
{0x045C,0x040C},
{0x045E,0x040E},
{0x045F,0x040F},
{0x0461,0x0460},
{0x0463,0x0462},
{0x0465,0x0464},
{0x0467,0x0466},
{0x0469,0x0468},
{0x046B,0x046A},
{0x046D,0x046C},
{0x046F,0x046E},
{0x0471,0x0470},
{0x0473,0x0472},
{0x0475,0x0474},
{0x0477,0x0476},
{0x0479,0x0478},
{0x047B,0x047A},
{0x047D,0x047C},
{0x047F,0x047E},
{0x0481,0x0480},
{0x0491,0x0490},
{0x0493,0x0492},
{0x0495,0x0494},
{0x0497,0x0496},
{0x0499,0x0498},
{0x049B,0x049A},
{0x049D,0x049C},
{0x049F,0x049E},
{0x04A1,0x04A0},
{0x04A3,0x04A2},
{0x04A5,0x04A4},
{0x04A7,0x04A6},
{0x04A9,0x04A8},
{0x04AB,0x04AA},
{0x04AD,0x04AC},
{0x04AF,0x04AE},
{0x04B1,0x04B0},
{0x04B3,0x04B2},
{0x04B5,0x04B4},
{0x04B7,0x04B6},
{0x04B9,0x04B8},
{0x04BB,0x04BA},
{0x04BD,0x04BC},
{0x04BF,0x04BE},
{0x04C2,0x04C1},
{0x04C4,0x04C3},
{0x04C8,0x04C7},
{0x04CC,0x04CB},
{0x04D1,0x04D0},
{0x04D3,0x04D2},
{0x04D5,0x04D4},
{0x04D7,0x04D6},
{0x04D9,0x04D8},
{0x04DB,0x04DA},
{0x04DD,0x04DC},
{0x04DF,0x04DE},
{0x04E1,0x04E0},
{0x04E3,0x04E2},
{0x04E5,0x04E4},
{0x04E7,0x04E6},
{0x04E9,0x04E8},
{0x04EB,0x04EA},
{0x04EF,0x04EE},
{0x04F1,0x04F0},
{0x04F3,0x04F2},
{0x04F5,0x04F4},
{0x04F9,0x04F8},
{0x0561,0x0531},
{0x0562,0x0532},
{0x0563,0x0533},
{0x0564,0x0534},
{0x0565,0x0535},
{0x0566,0x0536},
{0x0567,0x0537},
{0x0568,0x0538},
{0x0569,0x0539},
{0x056A,0x053A},
{0x056B,0x053B},
{0x056C,0x053C},
{0x056D,0x053D},
{0x056E,0x053E},
{0x056F,0x053F},
{0x0570,0x0540},
{0x0571,0x0541},
{0x0572,0x0542},
{0x0573,0x0543},
{0x0574,0x0544},
{0x0575,0x0545},
{0x0576,0x0546},
{0x0577,0x0547},
{0x0578,0x0548},
{0x0579,0x0549},
{0x057A,0x054A},
{0x057B,0x054B},
{0x057C,0x054C},
{0x057D,0x054D},
{0x057E,0x054E},
{0x057F,0x054F},
{0x0580,0x0550},
{0x0581,0x0551},
{0x0582,0x0552},
{0x0583,0x0553},
{0x0584,0x0554},
{0x0585,0x0555},
{0x0586,0x0556},
{0x10D0,0x10A0},
{0x10D1,0x10A1},
{0x10D2,0x10A2},
{0x10D3,0x10A3},
{0x10D4,0x10A4},
{0x10D5,0x10A5},
{0x10D6,0x10A6},
{0x10D7,0x10A7},
{0x10D8,0x10A8},
{0x10D9,0x10A9},
{0x10DA,0x10AA},
{0x10DB,0x10AB},
{0x10DC,0x10AC},
{0x10DD,0x10AD},
{0x10DE,0x10AE},
{0x10DF,0x10AF},
{0x10E0,0x10B0},
{0x10E1,0x10B1},
{0x10E2,0x10B2},
{0x10E3,0x10B3},
{0x10E4,0x10B4},
{0x10E5,0x10B5},
{0x10E6,0x10B6},
{0x10E7,0x10B7},
{0x10E8,0x10B8},
{0x10E9,0x10B9},
{0x10EA,0x10BA},
{0x10EB,0x10BB},
{0x10EC,0x10BC},
{0x10ED,0x10BD},
{0x10EE,0x10BE},
{0x10EF,0x10BF},
{0x10F0,0x10C0},
{0x10F1,0x10C1},
{0x10F2,0x10C2},
{0x10F3,0x10C3},
{0x10F4,0x10C4},
{0x10F5,0x10C5},
{0x1E01,0x1E00},
{0x1E03,0x1E02},
{0x1E05,0x1E04},
{0x1E07,0x1E06},
{0x1E09,0x1E08},
{0x1E0B,0x1E0A},
{0x1E0D,0x1E0C},
{0x1E0F,0x1E0E},
{0x1E11,0x1E10},
{0x1E13,0x1E12},
{0x1E15,0x1E14},
{0x1E17,0x1E16},
{0x1E19,0x1E18},
{0x1E1B,0x1E1A},
{0x1E1D,0x1E1C},
{0x1E1F,0x1E1E},
{0x1E21,0x1E20},
{0x1E23,0x1E22},
{0x1E25,0x1E24},
{0x1E27,0x1E26},
{0x1E29,0x1E28},
{0x1E2B,0x1E2A},
{0x1E2D,0x1E2C},
{0x1E2F,0x1E2E},
{0x1E31,0x1E30},
{0x1E33,0x1E32},
{0x1E35,0x1E34},
{0x1E37,0x1E36},
{0x1E39,0x1E38},
{0x1E3B,0x1E3A},
{0x1E3D,0x1E3C},
{0x1E3F,0x1E3E},
{0x1E41,0x1E40},
{0x1E43,0x1E42},
{0x1E45,0x1E44},
{0x1E47,0x1E46},
{0x1E49,0x1E48},
{0x1E4B,0x1E4A},
{0x1E4D,0x1E4C},
{0x1E4F,0x1E4E},
{0x1E51,0x1E50},
{0x1E53,0x1E52},
{0x1E55,0x1E54},
{0x1E57,0x1E56},
{0x1E59,0x1E58},
{0x1E5B,0x1E5A},
{0x1E5D,0x1E5C},
{0x1E5F,0x1E5E},
{0x1E61,0x1E60},
{0x1E63,0x1E62},
{0x1E65,0x1E64},
{0x1E67,0x1E66},
{0x1E69,0x1E68},
{0x1E6B,0x1E6A},
{0x1E6D,0x1E6C},
{0x1E6F,0x1E6E},
{0x1E71,0x1E70},
{0x1E73,0x1E72},
{0x1E75,0x1E74},
{0x1E77,0x1E76},
{0x1E79,0x1E78},
{0x1E7B,0x1E7A},
{0x1E7D,0x1E7C},
{0x1E7F,0x1E7E},
{0x1E81,0x1E80},
{0x1E83,0x1E82},
{0x1E85,0x1E84},
{0x1E87,0x1E86},
{0x1E89,0x1E88},
{0x1E8B,0x1E8A},
{0x1E8D,0x1E8C},
{0x1E8F,0x1E8E},
{0x1E91,0x1E90},
{0x1E93,0x1E92},
{0x1E95,0x1E94},
{0x1EA1,0x1EA0},
{0x1EA3,0x1EA2},
{0x1EA5,0x1EA4},
{0x1EA7,0x1EA6},
{0x1EA9,0x1EA8},
{0x1EAB,0x1EAA},
{0x1EAD,0x1EAC},
{0x1EAF,0x1EAE},
{0x1EB1,0x1EB0},
{0x1EB3,0x1EB2},
{0x1EB5,0x1EB4},
{0x1EB7,0x1EB6},
{0x1EB9,0x1EB8},
{0x1EBB,0x1EBA},
{0x1EBD,0x1EBC},
{0x1EBF,0x1EBE},
{0x1EC1,0x1EC0},
{0x1EC3,0x1EC2},
{0x1EC5,0x1EC4},
{0x1EC7,0x1EC6},
{0x1EC9,0x1EC8},
{0x1ECB,0x1ECA},
{0x1ECD,0x1ECC},
{0x1ECF,0x1ECE},
{0x1ED1,0x1ED0},
{0x1ED3,0x1ED2},
{0x1ED5,0x1ED4},
{0x1ED7,0x1ED6},
{0x1ED9,0x1ED8},
{0x1EDB,0x1EDA},
{0x1EDD,0x1EDC},
{0x1EDF,0x1EDE},
{0x1EE1,0x1EE0},
{0x1EE3,0x1EE2},
{0x1EE5,0x1EE4},
{0x1EE7,0x1EE6},
{0x1EE9,0x1EE8},
{0x1EEB,0x1EEA},
{0x1EED,0x1EEC},
{0x1EEF,0x1EEE},
{0x1EF1,0x1EF0},
{0x1EF3,0x1EF2},
{0x1EF5,0x1EF4},
{0x1EF7,0x1EF6},
{0x1EF9,0x1EF8},
{0x1F00,0x1F08},
{0x1F01,0x1F09},
{0x1F02,0x1F0A},
{0x1F03,0x1F0B},
{0x1F04,0x1F0C},
{0x1F05,0x1F0D},
{0x1F06,0x1F0E},
{0x1F07,0x1F0F},
{0x1F10,0x1F18},
{0x1F11,0x1F19},
{0x1F12,0x1F1A},
{0x1F13,0x1F1B},
{0x1F14,0x1F1C},
{0x1F15,0x1F1D},
{0x1F20,0x1F28},
{0x1F21,0x1F29},
{0x1F22,0x1F2A},
{0x1F23,0x1F2B},
{0x1F24,0x1F2C},
{0x1F25,0x1F2D},
{0x1F26,0x1F2E},
{0x1F27,0x1F2F},
{0x1F30,0x1F38},
{0x1F31,0x1F39},
{0x1F32,0x1F3A},
{0x1F33,0x1F3B},
{0x1F34,0x1F3C},
{0x1F35,0x1F3D},
{0x1F36,0x1F3E},
{0x1F37,0x1F3F},
{0x1F40,0x1F48},
{0x1F41,0x1F49},
{0x1F42,0x1F4A},
{0x1F43,0x1F4B},
{0x1F44,0x1F4C},
{0x1F45,0x1F4D},
{0x1F51,0x1F59},
{0x1F53,0x1F5B},
{0x1F55,0x1F5D},
{0x1F57,0x1F5F},
{0x1F60,0x1F68},
{0x1F61,0x1F69},
{0x1F62,0x1F6A},
{0x1F63,0x1F6B},
{0x1F64,0x1F6C},
{0x1F65,0x1F6D},
{0x1F66,0x1F6E},
{0x1F67,0x1F6F},
{0x1F80,0x1F88},
{0x1F81,0x1F89},
{0x1F82,0x1F8A},
{0x1F83,0x1F8B},
{0x1F84,0x1F8C},
{0x1F85,0x1F8D},
{0x1F86,0x1F8E},
{0x1F87,0x1F8F},
{0x1F90,0x1F98},
{0x1F91,0x1F99},
{0x1F92,0x1F9A},
{0x1F93,0x1F9B},
{0x1F94,0x1F9C},
{0x1F95,0x1F9D},
{0x1F96,0x1F9E},
{0x1F97,0x1F9F},
{0x1FA0,0x1FA8},
{0x1FA1,0x1FA9},
{0x1FA2,0x1FAA},
{0x1FA3,0x1FAB},
{0x1FA4,0x1FAC},
{0x1FA5,0x1FAD},
{0x1FA6,0x1FAE},
{0x1FA7,0x1FAF},
{0x1FB0,0x1FB8},
{0x1FB1,0x1FB9},
{0x1FD0,0x1FD8},
{0x1FD1,0x1FD9},
{0x1FE0,0x1FE8},
{0x1FE1,0x1FE9},
{0x24D0,0x24B6},
{0x24D1,0x24B7},
{0x24D2,0x24B8},
{0x24D3,0x24B9},
{0x24D4,0x24BA},
{0x24D5,0x24BB},
{0x24D6,0x24BC},
{0x24D7,0x24BD},
{0x24D8,0x24BE},
{0x24D9,0x24BF},
{0x24DA,0x24C0},
{0x24DB,0x24C1},
{0x24DC,0x24C2},
{0x24DD,0x24C3},
{0x24DE,0x24C4},
{0x24DF,0x24C5},
{0x24E0,0x24C6},
{0x24E1,0x24C7},
{0x24E2,0x24C8},
{0x24E3,0x24C9},
{0x24E4,0x24CA},
{0x24E5,0x24CB},
{0x24E6,0x24CC},
{0x24E7,0x24CD},
{0x24E8,0x24CE},
{0x24E9,0x24CF},
{0xFF41,0xFF21},
{0xFF42,0xFF22},
{0xFF43,0xFF23},
{0xFF44,0xFF24},
{0xFF45,0xFF25},
{0xFF46,0xFF26},
{0xFF47,0xFF27},
{0xFF48,0xFF28},
{0xFF49,0xFF29},
{0xFF4A,0xFF2A},
{0xFF4B,0xFF2B},
{0xFF4C,0xFF2C},
{0xFF4D,0xFF2D},
{0xFF4E,0xFF2E},
{0xFF4F,0xFF2F},
{0xFF50,0xFF30},
{0xFF51,0xFF31},
{0xFF52,0xFF32},
{0xFF53,0xFF33},
{0xFF54,0xFF34},
{0xFF55,0xFF35},
{0xFF56,0xFF36},
{0xFF57,0xFF37},
{0xFF58,0xFF38},
{0xFF59,0xFF39},
{0xFF5A,0xFF3A},
};

static const int reverse_caps_table[CAPS_LEN-1][2]={
{0x41,0x61},
{0x42,0x62},
{0x43,0x63},
{0x44,0x64},
{0x45,0x65},
{0x46,0x66},
{0x47,0x67},
{0x48,0x68},
{0x49,0x69},
{0x4a,0x6a},
{0x4b,0x6b},
{0x4c,0x6c},
{0x4d,0x6d},
{0x4e,0x6e},
{0x4f,0x6f},
{0x50,0x70},
{0x51,0x71},
{0x52,0x72},
{0x53,0x73},
{0x54,0x74},
{0x55,0x75},
{0x56,0x76},
{0x57,0x77},
{0x58,0x78},
{0x59,0x79},
{0x5a,0x7a},
{0xc0,0xe0},
{0xc1,0xe1},
{0xc2,0xe2},
{0xc3,0xe3},
{0xc4,0xe4},
{0xc5,0xe5},
{0xc6,0xe6},
{0xc7,0xe7},
{0xc8,0xe8},
{0xc9,0xe9},
{0xca,0xea},
{0xcb,0xeb},
{0xcc,0xec},
{0xcd,0xed},
{0xce,0xee},
{0xcf,0xef},
{0xd0,0xf0},
{0xd1,0xf1},
{0xd2,0xf2},
{0xd3,0xf3},
{0xd4,0xf4},
{0xd5,0xf5},
{0xd6,0xf6},
{0xd8,0xf8},
{0xd9,0xf9},
{0xda,0xfa},
{0xdb,0xfb},
{0xdc,0xfc},
{0xdd,0xfd},
{0xde,0xfe},
{0x178,0xff},
{0x100,0x101},
{0x102,0x103},
{0x104,0x105},
{0x106,0x107},
{0x108,0x109},
{0x10a,0x10b},
{0x10c,0x10d},
{0x10e,0x10f},
{0x110,0x111},
{0x112,0x113},
{0x114,0x115},
{0x116,0x117},
{0x118,0x119},
{0x11a,0x11b},
{0x11c,0x11d},
{0x11e,0x11f},
{0x120,0x121},
{0x122,0x123},
{0x124,0x125},
{0x126,0x127},
{0x128,0x129},
{0x12a,0x12b},
{0x12c,0x12d},
{0x12e,0x12f},
//{0x49,0x131},
{0x132,0x133},
{0x134,0x135},
{0x136,0x137},
{0x139,0x13a},
{0x13b,0x13c},
{0x13d,0x13e},
{0x13f,0x140},
{0x141,0x142},
{0x143,0x144},
{0x145,0x146},
{0x147,0x148},
{0x14a,0x14b},
{0x14c,0x14d},
{0x14e,0x14f},
{0x150,0x151},
{0x152,0x153},
{0x154,0x155},
{0x156,0x157},
{0x158,0x159},
{0x15a,0x15b},
{0x15c,0x15d},
{0x15e,0x15f},
{0x160,0x161},
{0x162,0x163},
{0x164,0x165},
{0x166,0x167},
{0x168,0x169},
{0x16a,0x16b},
{0x16c,0x16d},
{0x16e,0x16f},
{0x170,0x171},
{0x172,0x173},
{0x174,0x175},
{0x176,0x177},
{0x179,0x17a},
{0x17b,0x17c},
{0x17d,0x17e},
{0x182,0x183},
{0x184,0x185},
{0x187,0x188},
{0x18b,0x18c},
{0x191,0x192},
{0x198,0x199},
{0x1a0,0x1a1},
{0x1a2,0x1a3},
{0x1a4,0x1a5},
{0x1a7,0x1a8},
{0x1ac,0x1ad},
{0x1af,0x1b0},
{0x1b3,0x1b4},
{0x1b5,0x1b6},
{0x1b8,0x1b9},
{0x1bc,0x1bd},
{0x1c4,0x1c6},
{0x1c7,0x1c9},
{0x1ca,0x1cc},
{0x1cd,0x1ce},
{0x1cf,0x1d0},
{0x1d1,0x1d2},
{0x1d3,0x1d4},
{0x1d5,0x1d6},
{0x1d7,0x1d8},
{0x1d9,0x1da},
{0x1db,0x1dc},
{0x1de,0x1df},
{0x1e0,0x1e1},
{0x1e2,0x1e3},
{0x1e4,0x1e5},
{0x1e6,0x1e7},
{0x1e8,0x1e9},
{0x1ea,0x1eb},
{0x1ec,0x1ed},
{0x1ee,0x1ef},
{0x1f1,0x1f3},
{0x1f4,0x1f5},
{0x1fa,0x1fb},
{0x1fc,0x1fd},
{0x1fe,0x1ff},
{0x200,0x201},
{0x202,0x203},
{0x204,0x205},
{0x206,0x207},
{0x208,0x209},
{0x20a,0x20b},
{0x20c,0x20d},
{0x20e,0x20f},
{0x210,0x211},
{0x212,0x213},
{0x214,0x215},
{0x216,0x217},
{0x181,0x253},
{0x186,0x254},
{0x18a,0x257},
{0x18e,0x258},
{0x18f,0x259},
{0x190,0x25b},
{0x193,0x260},
{0x194,0x263},
{0x197,0x268},
{0x196,0x269},
{0x19c,0x26f},
{0x19d,0x272},
{0x19f,0x275},
{0x1a9,0x283},
{0x1ae,0x288},
{0x1b1,0x28a},
{0x1b2,0x28b},
{0x1b7,0x292},
{0x386,0x3ac},
{0x388,0x3ad},
{0x389,0x3ae},
{0x38a,0x3af},
{0x391,0x3b1},
{0x392,0x3b2},
{0x393,0x3b3},
{0x394,0x3b4},
{0x395,0x3b5},
{0x396,0x3b6},
{0x397,0x3b7},
{0x398,0x3b8},
{0x399,0x3b9},
{0x39a,0x3ba},
{0x39b,0x3bb},
{0x39c,0x3bc},
{0x39d,0x3bd},
{0x39e,0x3be},
{0x39f,0x3bf},
{0x3a0,0x3c0},
{0x3a1,0x3c1},
{0x3a3,0x3c3},
{0x3a4,0x3c4},
{0x3a5,0x3c5},
{0x3a6,0x3c6},
{0x3a7,0x3c7},
{0x3a8,0x3c8},
{0x3a9,0x3c9},
{0x3aa,0x3ca},
{0x3ab,0x3cb},
{0x38c,0x3cc},
{0x38e,0x3cd},
{0x38f,0x3ce},
{0x3e2,0x3e3},
{0x3e4,0x3e5},
{0x3e6,0x3e7},
{0x3e8,0x3e9},
{0x3ea,0x3eb},
{0x3ec,0x3ed},
{0x3ee,0x3ef},
{0x410,0x430},
{0x411,0x431},
{0x412,0x432},
{0x413,0x433},
{0x414,0x434},
{0x415,0x435},
{0x416,0x436},
{0x417,0x437},
{0x418,0x438},
{0x419,0x439},
{0x41a,0x43a},
{0x41b,0x43b},
{0x41c,0x43c},
{0x41d,0x43d},
{0x41e,0x43e},
{0x41f,0x43f},
{0x420,0x440},
{0x421,0x441},
{0x422,0x442},
{0x423,0x443},
{0x424,0x444},
{0x425,0x445},
{0x426,0x446},
{0x427,0x447},
{0x428,0x448},
{0x429,0x449},
{0x42a,0x44a},
{0x42b,0x44b},
{0x42c,0x44c},
{0x42d,0x44d},
{0x42e,0x44e},
{0x42f,0x44f},
{0x401,0x451},
{0x402,0x452},
{0x403,0x453},
{0x404,0x454},
{0x405,0x455},
{0x406,0x456},
{0x407,0x457},
{0x408,0x458},
{0x409,0x459},
{0x40a,0x45a},
{0x40b,0x45b},
{0x40c,0x45c},
{0x40e,0x45e},
{0x40f,0x45f},
{0x460,0x461},
{0x462,0x463},
{0x464,0x465},
{0x466,0x467},
{0x468,0x469},
{0x46a,0x46b},
{0x46c,0x46d},
{0x46e,0x46f},
{0x470,0x471},
{0x472,0x473},
{0x474,0x475},
{0x476,0x477},
{0x478,0x479},
{0x47a,0x47b},
{0x47c,0x47d},
{0x47e,0x47f},
{0x480,0x481},
{0x490,0x491},
{0x492,0x493},
{0x494,0x495},
{0x496,0x497},
{0x498,0x499},
{0x49a,0x49b},
{0x49c,0x49d},
{0x49e,0x49f},
{0x4a0,0x4a1},
{0x4a2,0x4a3},
{0x4a4,0x4a5},
{0x4a6,0x4a7},
{0x4a8,0x4a9},
{0x4aa,0x4ab},
{0x4ac,0x4ad},
{0x4ae,0x4af},
{0x4b0,0x4b1},
{0x4b2,0x4b3},
{0x4b4,0x4b5},
{0x4b6,0x4b7},
{0x4b8,0x4b9},
{0x4ba,0x4bb},
{0x4bc,0x4bd},
{0x4be,0x4bf},
{0x4c1,0x4c2},
{0x4c3,0x4c4},
{0x4c7,0x4c8},
{0x4cb,0x4cc},
{0x4d0,0x4d1},
{0x4d2,0x4d3},
{0x4d4,0x4d5},
{0x4d6,0x4d7},
{0x4d8,0x4d9},
{0x4da,0x4db},
{0x4dc,0x4dd},
{0x4de,0x4df},
{0x4e0,0x4e1},
{0x4e2,0x4e3},
{0x4e4,0x4e5},
{0x4e6,0x4e7},
{0x4e8,0x4e9},
{0x4ea,0x4eb},
{0x4ee,0x4ef},
{0x4f0,0x4f1},
{0x4f2,0x4f3},
{0x4f4,0x4f5},
{0x4f8,0x4f9},
{0x531,0x561},
{0x532,0x562},
{0x533,0x563},
{0x534,0x564},
{0x535,0x565},
{0x536,0x566},
{0x537,0x567},
{0x538,0x568},
{0x539,0x569},
{0x53a,0x56a},
{0x53b,0x56b},
{0x53c,0x56c},
{0x53d,0x56d},
{0x53e,0x56e},
{0x53f,0x56f},
{0x540,0x570},
{0x541,0x571},
{0x542,0x572},
{0x543,0x573},
{0x544,0x574},
{0x545,0x575},
{0x546,0x576},
{0x547,0x577},
{0x548,0x578},
{0x549,0x579},
{0x54a,0x57a},
{0x54b,0x57b},
{0x54c,0x57c},
{0x54d,0x57d},
{0x54e,0x57e},
{0x54f,0x57f},
{0x550,0x580},
{0x551,0x581},
{0x552,0x582},
{0x553,0x583},
{0x554,0x584},
{0x555,0x585},
{0x556,0x586},
{0x10a0,0x10d0},
{0x10a1,0x10d1},
{0x10a2,0x10d2},
{0x10a3,0x10d3},
{0x10a4,0x10d4},
{0x10a5,0x10d5},
{0x10a6,0x10d6},
{0x10a7,0x10d7},
{0x10a8,0x10d8},
{0x10a9,0x10d9},
{0x10aa,0x10da},
{0x10ab,0x10db},
{0x10ac,0x10dc},
{0x10ad,0x10dd},
{0x10ae,0x10de},
{0x10af,0x10df},
{0x10b0,0x10e0},
{0x10b1,0x10e1},
{0x10b2,0x10e2},
{0x10b3,0x10e3},
{0x10b4,0x10e4},
{0x10b5,0x10e5},
{0x10b6,0x10e6},
{0x10b7,0x10e7},
{0x10b8,0x10e8},
{0x10b9,0x10e9},
{0x10ba,0x10ea},
{0x10bb,0x10eb},
{0x10bc,0x10ec},
{0x10bd,0x10ed},
{0x10be,0x10ee},
{0x10bf,0x10ef},
{0x10c0,0x10f0},
{0x10c1,0x10f1},
{0x10c2,0x10f2},
{0x10c3,0x10f3},
{0x10c4,0x10f4},
{0x10c5,0x10f5},
{0x1e00,0x1e01},
{0x1e02,0x1e03},
{0x1e04,0x1e05},
{0x1e06,0x1e07},
{0x1e08,0x1e09},
{0x1e0a,0x1e0b},
{0x1e0c,0x1e0d},
{0x1e0e,0x1e0f},
{0x1e10,0x1e11},
{0x1e12,0x1e13},
{0x1e14,0x1e15},
{0x1e16,0x1e17},
{0x1e18,0x1e19},
{0x1e1a,0x1e1b},
{0x1e1c,0x1e1d},
{0x1e1e,0x1e1f},
{0x1e20,0x1e21},
{0x1e22,0x1e23},
{0x1e24,0x1e25},
{0x1e26,0x1e27},
{0x1e28,0x1e29},
{0x1e2a,0x1e2b},
{0x1e2c,0x1e2d},
{0x1e2e,0x1e2f},
{0x1e30,0x1e31},
{0x1e32,0x1e33},
{0x1e34,0x1e35},
{0x1e36,0x1e37},
{0x1e38,0x1e39},
{0x1e3a,0x1e3b},
{0x1e3c,0x1e3d},
{0x1e3e,0x1e3f},
{0x1e40,0x1e41},
{0x1e42,0x1e43},
{0x1e44,0x1e45},
{0x1e46,0x1e47},
{0x1e48,0x1e49},
{0x1e4a,0x1e4b},
{0x1e4c,0x1e4d},
{0x1e4e,0x1e4f},
{0x1e50,0x1e51},
{0x1e52,0x1e53},
{0x1e54,0x1e55},
{0x1e56,0x1e57},
{0x1e58,0x1e59},
{0x1e5a,0x1e5b},
{0x1e5c,0x1e5d},
{0x1e5e,0x1e5f},
{0x1e60,0x1e61},
{0x1e62,0x1e63},
{0x1e64,0x1e65},
{0x1e66,0x1e67},
{0x1e68,0x1e69},
{0x1e6a,0x1e6b},
{0x1e6c,0x1e6d},
{0x1e6e,0x1e6f},
{0x1e70,0x1e71},
{0x1e72,0x1e73},
{0x1e74,0x1e75},
{0x1e76,0x1e77},
{0x1e78,0x1e79},
{0x1e7a,0x1e7b},
{0x1e7c,0x1e7d},
{0x1e7e,0x1e7f},
{0x1e80,0x1e81},
{0x1e82,0x1e83},
{0x1e84,0x1e85},
{0x1e86,0x1e87},
{0x1e88,0x1e89},
{0x1e8a,0x1e8b},
{0x1e8c,0x1e8d},
{0x1e8e,0x1e8f},
{0x1e90,0x1e91},
{0x1e92,0x1e93},
{0x1e94,0x1e95},
{0x1ea0,0x1ea1},
{0x1ea2,0x1ea3},
{0x1ea4,0x1ea5},
{0x1ea6,0x1ea7},
{0x1ea8,0x1ea9},
{0x1eaa,0x1eab},
{0x1eac,0x1ead},
{0x1eae,0x1eaf},
{0x1eb0,0x1eb1},
{0x1eb2,0x1eb3},
{0x1eb4,0x1eb5},
{0x1eb6,0x1eb7},
{0x1eb8,0x1eb9},
{0x1eba,0x1ebb},
{0x1ebc,0x1ebd},
{0x1ebe,0x1ebf},
{0x1ec0,0x1ec1},
{0x1ec2,0x1ec3},
{0x1ec4,0x1ec5},
{0x1ec6,0x1ec7},
{0x1ec8,0x1ec9},
{0x1eca,0x1ecb},
{0x1ecc,0x1ecd},
{0x1ece,0x1ecf},
{0x1ed0,0x1ed1},
{0x1ed2,0x1ed3},
{0x1ed4,0x1ed5},
{0x1ed6,0x1ed7},
{0x1ed8,0x1ed9},
{0x1eda,0x1edb},
{0x1edc,0x1edd},
{0x1ede,0x1edf},
{0x1ee0,0x1ee1},
{0x1ee2,0x1ee3},
{0x1ee4,0x1ee5},
{0x1ee6,0x1ee7},
{0x1ee8,0x1ee9},
{0x1eea,0x1eeb},
{0x1eec,0x1eed},
{0x1eee,0x1eef},
{0x1ef0,0x1ef1},
{0x1ef2,0x1ef3},
{0x1ef4,0x1ef5},
{0x1ef6,0x1ef7},
{0x1ef8,0x1ef9},
{0x1f08,0x1f00},
{0x1f09,0x1f01},
{0x1f0a,0x1f02},
{0x1f0b,0x1f03},
{0x1f0c,0x1f04},
{0x1f0d,0x1f05},
{0x1f0e,0x1f06},
{0x1f0f,0x1f07},
{0x1f18,0x1f10},
{0x1f19,0x1f11},
{0x1f1a,0x1f12},
{0x1f1b,0x1f13},
{0x1f1c,0x1f14},
{0x1f1d,0x1f15},
{0x1f28,0x1f20},
{0x1f29,0x1f21},
{0x1f2a,0x1f22},
{0x1f2b,0x1f23},
{0x1f2c,0x1f24},
{0x1f2d,0x1f25},
{0x1f2e,0x1f26},
{0x1f2f,0x1f27},
{0x1f38,0x1f30},
{0x1f39,0x1f31},
{0x1f3a,0x1f32},
{0x1f3b,0x1f33},
{0x1f3c,0x1f34},
{0x1f3d,0x1f35},
{0x1f3e,0x1f36},
{0x1f3f,0x1f37},
{0x1f48,0x1f40},
{0x1f49,0x1f41},
{0x1f4a,0x1f42},
{0x1f4b,0x1f43},
{0x1f4c,0x1f44},
{0x1f4d,0x1f45},
{0x1f59,0x1f51},
{0x1f5b,0x1f53},
{0x1f5d,0x1f55},
{0x1f5f,0x1f57},
{0x1f68,0x1f60},
{0x1f69,0x1f61},
{0x1f6a,0x1f62},
{0x1f6b,0x1f63},
{0x1f6c,0x1f64},
{0x1f6d,0x1f65},
{0x1f6e,0x1f66},
{0x1f6f,0x1f67},
{0x1f88,0x1f80},
{0x1f89,0x1f81},
{0x1f8a,0x1f82},
{0x1f8b,0x1f83},
{0x1f8c,0x1f84},
{0x1f8d,0x1f85},
{0x1f8e,0x1f86},
{0x1f8f,0x1f87},
{0x1f98,0x1f90},
{0x1f99,0x1f91},
{0x1f9a,0x1f92},
{0x1f9b,0x1f93},
{0x1f9c,0x1f94},
{0x1f9d,0x1f95},
{0x1f9e,0x1f96},
{0x1f9f,0x1f97},
{0x1fa8,0x1fa0},
{0x1fa9,0x1fa1},
{0x1faa,0x1fa2},
{0x1fab,0x1fa3},
{0x1fac,0x1fa4},
{0x1fad,0x1fa5},
{0x1fae,0x1fa6},
{0x1faf,0x1fa7},
{0x1fb8,0x1fb0},
{0x1fb9,0x1fb1},
{0x1fd8,0x1fd0},
{0x1fd9,0x1fd1},
{0x1fe8,0x1fe0},
{0x1fe9,0x1fe1},
{0x24b6,0x24d0},
{0x24b7,0x24d1},
{0x24b8,0x24d2},
{0x24b9,0x24d3},
{0x24ba,0x24d4},
{0x24bb,0x24d5},
{0x24bc,0x24d6},
{0x24bd,0x24d7},
{0x24be,0x24d8},
{0x24bf,0x24d9},
{0x24c0,0x24da},
{0x24c1,0x24db},
{0x24c2,0x24dc},
{0x24c3,0x24dd},
{0x24c4,0x24de},
{0x24c5,0x24df},
{0x24c6,0x24e0},
{0x24c7,0x24e1},
{0x24c8,0x24e2},
{0x24c9,0x24e3},
{0x24ca,0x24e4},
{0x24cb,0x24e5},
{0x24cc,0x24e6},
{0x24cd,0x24e7},
{0x24ce,0x24e8},
{0x24cf,0x24e9},
{0xff21,0xff41},
{0xff22,0xff42},
{0xff23,0xff43},
{0xff24,0xff44},
{0xff25,0xff45},
{0xff26,0xff46},
{0xff27,0xff47},
{0xff28,0xff48},
{0xff29,0xff49},
{0xff2a,0xff4a},
{0xff2b,0xff4b},
{0xff2c,0xff4c},
{0xff2d,0xff4d},
{0xff2e,0xff4e},
{0xff2f,0xff4f},
{0xff30,0xff50},
{0xff31,0xff51},
{0xff32,0xff52},
{0xff33,0xff53},
{0xff34,0xff54},
{0xff35,0xff55},
{0xff36,0xff56},
{0xff37,0xff57},
{0xff38,0xff58},
{0xff39,0xff59},
{0xff3a,0xff5a}
};

static int _find_upper(int ch)  {


	int low = 0;
	int high = CAPS_LEN -1;
	int middle;

	while( low <= high )
	{
		middle = ( low  + high ) / 2;

		if( ch < caps_table[ middle][0] ) {
			high = middle - 1; //search low end of array
		} else if ( caps_table[middle][0] < ch) {
			low = middle + 1; //search high end of array
		} else {
			return caps_table[middle][1];
		}
	}

	return ch;
}


static int _find_lower(int ch)  {


	int low = 0;
	int high = CAPS_LEN -2;
	int middle;

	while( low <= high )
	{
		middle = ( low  + high ) / 2;

		if( ch < reverse_caps_table[ middle][0] ) {
			high = middle - 1; //search low end of array
		} else if ( reverse_caps_table[middle][0] < ch) {
			low = middle + 1; //search high end of array
		} else {
			return reverse_caps_table[middle][1];
		}
	}

	return ch;
}
#endif
